import { log } from "console";
import { ethers } from "ethers";

// 利用公共rpc节点连接以太坊网络
// 可以在 https://chainlist.org 上找到
const ALCHEMY_MAINNET_URL = 'https://1rpc.io/eth';
const ALCHEMY_SEPOLIA_URL = 'https://eth-sepolia.public.blastapi.io';
// 连接以太坊主网
const providerETH = new ethers.JsonRpcProvider(ALCHEMY_MAINNET_URL)
// 连接Sepolia测试网
const providerSepolia = new ethers.JsonRpcProvider(ALCHEMY_SEPOLIA_URL)

const network = await providerETH.getNetwork()
console.log(network.toJSON())

// 查询区块高度
const blockNumber = await providerETH.getBlockNumber();
console.log(`blockNumber:${blockNumber}`)

// 查询钱包交易历史次数
const txCount = await providerETH.getTransactionCount('vitalik.eth');
console.log(`txCount:${txCount}`)

// 查询当前建议的gas设置
// gasPrice 表示用户愿意为每单位 Gas 支付的单价（以 Gwei 计）‌
// maxFeePerGas 用户愿意为每单位 Gas 支付的‌最高总费用‌，包含两部分
    //  基础费用（Base Fee）‌：由协议动态计算，随区块拥堵程度波动，‌直接销毁‌‌
    //  ‌矿工小费（Priority Fee）‌：即 maxPriorityFeePerGas，奖励矿工的部分‌
// maxPriorityFeePerGas 用户支付给矿工的‌小费单价‌（以 Gwei 计）
// 实际支付单价 = min(maxFeePerGas, 基础费用 + maxPriorityFeePerGas)
const feeData = await providerETH.getFeeData();
console.log(feeData)

// 查询区块信息
const block = await providerETH.getBlock(0)
console.log(block)

// 合约字节码 WETH
const code = await providerETH.getCode('0xc778417e063141139fce010982780140aa0cd5ab')
console.log(code)


const balance = await providerETH.getBalance('vitalik.eth')
const balanceSepolia = await providerSepolia.getBalance('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045')
console.log(`balance: ${ethers.formatEther(balance)}`)
console.log(`sepolia balance: ${ethers.formatEther(balanceSepolia)}`)

